
#ifndef _GRAPH_H_
#define _GRAPH_H_

#include "list.h"
#include "object.h"
#include "arc.h"
#include "noeud.h"


struct s_Graphe
{
    List noeuds;
} typedef Graphe; 

void graphe_create(Graphe** graphe);
void graphe_initialize(Graphe* graphe);
void graphe_clear(Graphe* graphe);
void graphe_destroy(Graphe** graphe);
int graphe_getNodeIndexByValue(Graphe* graphe, const char* name);
int graphe_addNode(Graphe* graphe, const char *name);
int graphe_removeNode(Graphe* graphe, Noeud* noeud);
int graphe_removeNodeByValue(Graphe* graphe, const char* name);
int graphe_removeNodeByIndex(Graphe* graphe, int index);
int graphe_addArcByValue(Graphe* graphe, const char* name1, const char* name2, int cost);
int graphe_addArcByIndex(Graphe* graphe, int index1, int index2, int cost);
void graphe_print(const Graphe* graphe);
/*
procédure initGrapheVide(donnée-résultat G : Graphe)
fonction ajoutGrapheNoeud(donnée-résultat G : Graphe, donnée nom : chaîne) : entier
fonction supressionGrapheNoeudParIndice(donnée-résultat G : Graphe,donnée i : entier) : entier
fonction supressionGrapheNoeudParNom(donnée-résultat G : Graphe,donnée nom : chaîne) : entier
fonction ajoutGrapheArcParIndice(donnée-résultat G : Graphe, donnée v : entier,donnée i : entier, donnée j : entier) : entier
fonction ajoutGrapheArcParNom(donnée-résultat G : Graphe, donnée v : entier,donnée nom1 : chaîne, donnée nom2 : chaîne) : entier
*/

#endif
